/*
 * Copyright 2008-2023 dexian.vip. All rights reserved.
 * Support: http://www.dexian.vip
 * License: http://www.dexian.vip/license
 */

package vip.dexian.core.config.oss.upload;

import vip.dexian.common.CommonAttributes;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 文件上传配置
 *
 * @author 挺好的 2023年06月01日 13:23
 */
@ConfigurationProperties ("upload")
@Component ("uploadProperties")
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode (callSuper = false)
public class UploadProperties {

    /**
     * 媒体
     */
    private UploadInfo media;

    /**
     * 文件
     */
    private UploadInfo file;

    /**
     * 图片
     */
    private UploadInfo image;

    /**
     * 上传的目录，当测试环境和生产环境的域名是分离的时候，可以不用配置该目录，如果不分离，为了区分哪些是环境，请配置该目录
     */
    private String uploadDirectory;

    /**
     * @return 媒体文件允许上传的后缀
     */
    public String[] getMediaExtensions () {
        return StringUtils.split(this.media.getExtension(), CommonAttributes.SEPARATOR);
    }

    /**
     * @return 媒体文件存放路径
     */
    public String getMediaPath () {
        return this.media.getPath();
    }

    /**
     * @return 文件大小限制
     */
    public Integer getMediaMaxSize () {
        return this.media.getMaxSize();
    }

    /**
     * @return 文件允许上传的后缀
     */
    public String[] getFileExtensions () {
        return StringUtils.split(this.file.getExtension(), CommonAttributes.SEPARATOR);
    }

    /**
     * @return 媒体文件存放路径
     */
    public String getFilePath () {
        return this.file.getPath();
    }

    /**
     * @return 文件大小限制
     */
    public Integer getFileMaxSize () {
        return this.file.getMaxSize();
    }

    /**
     * @return 图片允许上传的后缀
     */
    public String[] getImageExtensions () {
        return StringUtils.split(this.image.getExtension(), CommonAttributes.SEPARATOR);
    }

    /**
     * @return 图片文件存放路径
     */
    public String getImagePath () {
        return this.image.getPath();
    }

    /**
     * @return 文件大小限制
     */
    public Integer getImageMaxSize () {
        return this.image.getMaxSize();
    }

}
